package controller;

import java.util.ArrayList;
import java.util.List;

import model.ItemReposicion;
import beans.ItemReposicionBean;
import dao.HibernateItemPlanProduccionDAO;
import dto.ItemReposicionDTO;

public class AdministradorItemReposicion {
	private static AdministradorItemReposicion instancia;
	private AdministradorItemReposicion(){
		
	}
	public static AdministradorItemReposicion getInstancia(){
		if(instancia==null)
			instancia=new AdministradorItemReposicion();
		return instancia;
	}
	public ItemReposicionBean fromModelTOBean(ItemReposicion itemReposicion) {
		ItemReposicionBean itemReposicionBean=null;
		if(itemReposicion!=null){
			itemReposicionBean=new ItemReposicionBean();
			itemReposicionBean.setId(itemReposicion.getId());
			itemReposicionBean.setCantidad(itemReposicion.getCantidad());
			itemReposicionBean.setEstado(itemReposicion.getEstado());
			itemReposicionBean.setProducto(AdministradorProducto.getInstancia().fromModelTOBean(itemReposicion.getProducto()));
		}
		return itemReposicionBean;
	}
	
	public List<ItemReposicionBean> fromModelTOBean(List<ItemReposicion> itemReposicionsAlternativos) {
		List<ItemReposicionBean> itemReposicionsAltBean=new ArrayList<ItemReposicionBean>();
		
		for (ItemReposicion itemReposicion : itemReposicionsAlternativos) {
			ItemReposicionBean itemReposicionBean=this.fromModelTOBean(itemReposicion);
			itemReposicionsAltBean.add(itemReposicionBean);
		}
		
		return itemReposicionsAltBean;
	}

	public List<ItemReposicion> fromDTOTOModel(List<ItemReposicionDTO> itemReposicionsDTO) {
		List<ItemReposicion> itemReposicionsAlt=new ArrayList<ItemReposicion>();
		
		for (ItemReposicionDTO itemReposicionDTO : itemReposicionsDTO) {
			ItemReposicion itemReposicion=this.fromDTOTOModel(itemReposicionDTO);
			itemReposicionsAlt.add(itemReposicion);
		}
		
		return itemReposicionsAlt;
	}
	public ItemReposicion fromDTOTOModel(ItemReposicionDTO itemReposicionDTO) {
		ItemReposicion itemReposicion=null;
		if(itemReposicionDTO!=null){	
			itemReposicion=new ItemReposicion();
			itemReposicion.setId(itemReposicionDTO.getId());
			itemReposicion.setCantidad(itemReposicionDTO.getCantidad());
			itemReposicion.setEstado(itemReposicionDTO.getEstado());
			itemReposicion.setProducto(AdministradorProducto.getInstancia().fromDTOTOModel(itemReposicionDTO.getProducto()));
		}
		return itemReposicion;
	}
	
	public List<ItemReposicionDTO> fromModelTODTO(List<ItemReposicion> itemReposicions) {
		List<ItemReposicionDTO> itemReposicionsAltDTO=new ArrayList<ItemReposicionDTO>();
		
		for (ItemReposicion itemReposicion : itemReposicions) {
			ItemReposicionDTO itemReposicionDTO=this.fromModelTODTO(itemReposicion);
			itemReposicionsAltDTO.add(itemReposicionDTO);
		}
		
		return itemReposicionsAltDTO;
	}
	public ItemReposicionDTO fromModelTODTO(ItemReposicion itemReposicion) {
		ItemReposicionDTO itemReposicionDTO=null;
		if(itemReposicion!=null){	
			itemReposicionDTO=new ItemReposicionDTO();
			itemReposicionDTO.setId(itemReposicion.getId());
			itemReposicionDTO.setCantidad(itemReposicion.getCantidad());
			itemReposicionDTO.setEstado(itemReposicion.getEstado());
			itemReposicionDTO.setProducto(AdministradorProducto.getInstancia().fromModelTODTO(itemReposicion.getProducto()));
		}
		return itemReposicionDTO;
	}
	
	public List<ItemReposicion> fromBeanTOModel(List<ItemReposicionBean> itemReposicionsBean) {
		List<ItemReposicion> itemReposicionsAlt=new ArrayList<ItemReposicion>();
		
		for (ItemReposicionBean itemReposicionBean : itemReposicionsBean) {
			ItemReposicion itemReposicion=this.fromBeanTOModel(itemReposicionBean);
			itemReposicionsAlt.add(itemReposicion);
		}
		
		return itemReposicionsAlt;
	}
	public ItemReposicion fromBeanTOModel(ItemReposicionBean itemReposicionBean) {
		ItemReposicion itemReposicion=null;
		if(itemReposicionBean!=null){
			
			itemReposicion=new ItemReposicion();
			itemReposicion.setId(itemReposicionBean.getId());
			itemReposicion.setCantidad(itemReposicionBean.getCantidad());
			itemReposicion.setEstado(itemReposicionBean.getEstado());
			itemReposicion.setProducto(AdministradorProducto.getInstancia().fromBeanTOModel(itemReposicionBean.getProducto()));
			
		}
		return itemReposicion;
	}
	public void remove(List<ItemReposicion> items) {
		List<ItemReposicionBean> itemsb=fromModelTOBean(items);
		for (ItemReposicionBean itemReposicionBean : itemsb) {
			HibernateItemPlanProduccionDAO.getInstancia().removeItems(itemReposicionBean);
		}
		
	}
}
